# 请用pdfminer实现，在pdf文件中，有一个文本XXXX，如何通过XXXX文本，来获取该文本XXXX下一行的第2个元素？

import pdfplumber, itertools

# rel_x>=1, rel_y>=1
def get_element_below(pdf_path, search_text, rel_x=1, rel_y=1):
    with pdfplumber.open(pdf_path) as pdf:
        # 假设目标文本在第一页，可以根据需要调整
        # page = pdf.pages[0]
        for page in pdf.pages:
        
            # 获取页面上的所有文本元素及其布局信息
            text_elements = page.extract_words()
            
            # 查找目标文本
            target_element = None
            for element in text_elements:
                if element['text'] == search_text:
                    target_element = element
                    break
            
            if target_element:
                print("target_element['bottom']=", target_element['bottom'])
                # 确定目标文本下方一行的第一个元素
                # 注意：这里的逻辑简化处理，实际可能需要更复杂的逻辑来确定“下一行”

                elements_below = [e for e in text_elements if e['top'] > target_element['bottom']]
                # 按照表名分组
                grouped_elements = [list(grouped_items) for tab, grouped_items in itertools.groupby(elements_below, lambda x: x['top'])]
                    # grouped_elements[tab] = list(grouped_items)
                elements_below = grouped_elements[rel_x-1]

                if elements_below:  # 确保有元素在目标元素下方
                    # 获取“下一行”的第二个元素，注意索引从0开始
                    second_element_below = next((e for i, e in enumerate(elements_below) if i == rel_y-1), None)
                    
                    if second_element_below:
                        return second_element_below['text']


# 使用函数，提供PDF路径和要查找的文本
pdf_file_path = "a.pdf"
search_text = "发生信贷交易的机构数"
result = get_element_below(pdf_file_path, search_text, 3, 2)
if result:
    print("目标文本下一行的第二个元素是:", result)
else:
    print("没有找到位于'{}'下方的元素。".format(search_text))